/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cl.dfg.twittersneps;


import cl.dfg.twittersneps.modelo.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.Vector;


/**
 *
 * @author Franco
 */
public class Estadistica {

    List <Diccionario> palabras = new ArrayList<Diccionario>();
    FileRW file = new FileRW();
    HashtableMaster master = new HashtableMaster();
    
    public Estadistica(){
    }

    //Realiza el conteo de estructuras
    public void buscarEstructuras(String mensaje){

     //Pasando el mensaje a minuscula
     //System.out.println("NORMAL= "+mensaje);
     mensaje = mensaje.toLowerCase();
     //System.out.println("minuscula= "+mensaje);

  //    TwittersnepsView.api.tell("^(sneps:lexin \"kb.sneps\")");
     int contador;
//     String regla = "";
//     String cadena1;
//     String cadena2 = "";
     //Separa el mensaje en N-Grams: uni-grams, bi-grams, tri-grams
     for (int n=1; n <= 3; n++)
        for (String ngram : ngrams(n,mensaje)){

            // System.out.println("SEPARADOR= "+ngram);
        
            contador = 1;
            StringTokenizer st = new StringTokenizer(ngram);

            if( st.countTokens() == 1 ){

                file.buscarPalabra(ngram);
                //cadena1 = TwittersnepsView.fileRW.leerLexicon(ngram);
                //regla += cadena1.concat(cadena2);
               // regla += " ";
               master.buscarNgrams(1, ngram);
                
            }

            if( st.countTokens() == 2 ){

                master.buscarNgrams(2, ngram);
           
            }
            
            if( st.countTokens() == 3 ){

                master.buscarNgrams(3, ngram);

            }
         }
            


//            // TwittersnepsView.api.tell("Tweet(" + s + ").");



//
//     //   TwittersnepsView.api.tell("^(englex:lookup \"endeudarse\")");

master.ordenarTabla(master.getHashtable(1), TwittersnepsView.jTextPane10);
master.ordenarTabla(master.getHashtable(2), TwittersnepsView.jTextPane11);
master.ordenarTabla(master.getHashtable(3), TwittersnepsView.jTextPane12);
////System.out.println(mensaje);
////System.out.println(regla);


 }


 public static List<String> ngrams(int n, String mensaje) {
        List<String> ngrams = new ArrayList<String>();
        String[] words = mensaje.split(" ");
        
        for (int i = 0; i < words.length - n + 1; i++)
            ngrams.add(concat(words, i, i+n));
        return ngrams;
    }

public static String concat(String[] words, int start, int end) {
        StringBuilder sb = new StringBuilder();
        for (int i = start; i < end; i++)
            sb.append((i > start ? " " : "") + words[i]);
        return sb.toString();
}








}




